package com.wxzz.elearing.livetelecast.service;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wxzz.elearing.livetelecast.dto.*;
import com.wxzz.elearing.livetelecast.entity.Activity;
import com.wxzz.elearing.livetelecast.entity.ActivityCategory;
import com.wxzz.elearing.livetelecast.entity.WxUserPlatformLivetelecast;
import com.wxzz.elearing.livetelecast.vo.ActivityStatisticsVo;
import com.wxzz.elearning.common.dto.ActivityStatisticsDto;
import com.wxzz.elearning.common.vo.JgPageVo;
import com.wxzz.elearning.common.vo.ReturnVO;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * <p>
 * 活动 服务类
 * </p>
 *
 * @author
 * @since 2021-04-23
 */
public interface IActivityService extends IService<Activity> {

    /**
     * 活动列表(小程序)
     *
     * @return
     */
    ReturnVO<JgPageVo<List<Activity>>> listActivity(WxActivityDto wxActivityDto);

    /**
     * 查询活动详情(小程序)
     *
     * @param activityId
     * @return
     */
    ReturnVO<Activity> selectActivityById(Long wxUserId, Long activityId);

    /**
     * 活动分类列表(小程序)
     *
     * @return
     */
    ReturnVO<List<ActivityCategory>> listActivityCategory();

    /**
     * 活动详情报名列表(小程序)
     *
     * @param wxInPlatformLivetelecastDto
     * @return
     */
    ReturnVO<JgPageVo<List<WxUserPlatformLivetelecast>>> listWxUserPlatformLivetelecast(WxInPlatformLivetelecastDto wxInPlatformLivetelecastDto);


    /**
     * 活动预约(小程序)
     *
     * @param wxUserPlatformLivetelecast4activityDto
     * @return
     */
    ReturnVO saveWxUserPlatformLivetelecast4activity(JSONObject jsonObject, WxUserPlatformLivetelecast4activityDto wxUserPlatformLivetelecast4activityDto);

    /**
     * 新增或修改活动
     *
     * @param activity
     * @return
     */
    ReturnVO saveActivity(Activity activity);

    /**
     * 根据活动id查询详情
     *
     * @param activityId
     * @return
     */
    ReturnVO<Activity> selectActivityById(Long activityId);

    /**
     * 新增或修改活动分类
     *
     * @param activityCategory
     * @return
     */
    ReturnVO saveActivityCategory(ActivityCategory activityCategory);

    /**
     * 列出活动分类
     *
     * @param activityCategoryDto
     * @return
     */
    ReturnVO<JgPageVo<ActivityCategory>> listActivityCategory(ActivityCategoryDto activityCategoryDto);

    /**
     * 根据id删除活动分类
     *
     * @param activityCategoryId
     * @return
     */
    ReturnVO deleteActivityCategoryById(Long activityCategoryId);

    /**
     * 根据活动id查看统计数据
     *
     * @param activityId
     * @return
     */
    ReturnVO<ActivityStatisticsVo> selectActivityStatisticsVoByActivity(Long activityId);

    /**
     * 活动签到人员导入
     *
     * @param activityId
     * @return
     */
    ReturnVO importActivity(String token, Long activityId, MultipartFile file);

    /**
     * 活动签到
     *
     * @param wxUserId
     * @param activityId
     * @return
     */
    ReturnVO activitySignIn(Long wxUserId, Long activityId);
}
